package com.nineclock.sign.service;

import com.nineclock.common.entity.PageResult;
import com.nineclock.sign.dto.SignInfoDTO;
import com.nineclock.sign.dto.SignInfoListDTO;
import com.nineclock.sign.dto.UserInfo;
import com.nineclock.sign.dto.UserSignInfoDTO;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.util.List;

/**
 * @author cjh
 * @date 2021/12/2 15:46
 */
public interface SignInfoService {
    /**
     * APP: 签到
     * @param signInfoDTO 签到信息DTO
     */
    void insert(SignInfoDTO signInfoDTO) throws UnsupportedEncodingException;

    /**
     * 获取当前用户当天签到次数
     * @return
     */
    Integer getDayCount();

    /**
     * 获取团队员工打卡列表
     * @return
     */
    List<SignInfoListDTO> listSignAllUser(String dateStr);



    /**
     * PC分页查询签到列表
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 当前页
     * @param pageSize 每页大小
     * @return
     */
    PageResult<UserSignInfoDTO> sign(String startTime, String endTime, Integer page, Integer pageSize);

    /**
     * 导出数据
     * @param startTime 开始时间
     * @param endTime 结束时间
     */
    void export(String startTime, String endTime) throws IOException;

    /**
     * 通过id查询sign
     * @param id
     * @return
     */
    SignInfoDTO getById(Long id);

    /**
     * 王津代码
     * @return
     */
    List<SignInfoDTO> getMonthCount();

    /**
     * 拓展：
     * @param userId
     * @param createDate
     * @return
     */
    UserInfo getSignInfoByUserIdAndCreateDate(Long userId, String createDate);
}
